// TypeUtil.java; class file size 7510 bytes

package org.googlecode.viewt.core.utils;

public class TypeUtil {
	// static Class class$java$lang$Boolean;
	// static Class class$java$lang$Character;
	// static Class class$java$lang$Byte;
	// static Class class$java$lang$Short;
	// static Class class$java$lang$Integer;
	// static Class class$java$lang$Long;
	// static Class class$java$lang$Float;
	// static Class class$java$lang$Double;
	// static Class class$com$leadron$bos$base$util$TypeUtil;
	// static Class class$java$util$Date;
	// static Class class$java$lang$String;

	public TypeUtil() {
	}

	public static Class loadClass(String className)
			throws ClassNotFoundException {
		ClassLoader loader = null;
		Class destClass = null;
		loader = Thread.currentThread().getContextClassLoader();
		if (loader == null) {
			destClass = Class.forName(className);
		} else {
			try {
				destClass = loader.loadClass(className);
			} catch (ClassNotFoundException e) {
				destClass = Class.forName(className);
			}
		}

		return destClass;
	}

	public static String fullPrimaryClassName(String typeName) {
		String dimension = "";
		if (typeName.endsWith("[]")) {
			typeName = typeName.substring(0, typeName.length() - 2);
			dimension = "[]";
		}

		if ("Boolean".equals(typeName))
			return "java.lang.Boolean" + dimension;
		if ("Byte".equals(typeName))
			return "java.lang.Byte" + dimension;
		if ("Character".equals(typeName))
			return "java.lang.Character" + dimension;
		if ("Short".equals(typeName))
			return "java.lang.Short" + dimension;
		if ("Integer".equals(typeName))
			return "java.lang.Integer" + dimension;
		if ("Long".equals(typeName))
			return "java.lang.Long" + dimension;
		if ("Float".equals(typeName))
			return "java.lang.Float" + dimension;
		if ("Double".equals(typeName))
			return "java.lang.Double" + dimension;
		if (("date".equals(typeName)) || ("Date".equals(typeName)))
			return "java.util.Date" + dimension;
		if (("string".equals(typeName)) || ("String".equals(typeName)))
			return "java.lang.String" + dimension;
		if (("list".equals(typeName)) || ("List".equals(typeName)))
			return "java.util.List" + dimension;
		if (("set".equals(typeName)) || ("Set".equals(typeName)))
			return "java.util.Set" + dimension;
		if (("map".equals(typeName)) || ("Map".equals(typeName))) {
			return "java.util.Map" + dimension;
		}
		return typeName + dimension;
	}

	// static public Object convertType(Object srcObj, Class destClass) throws
	// com.leadron.bos.base.exception.TypeConvertException {
	// return TypeUtil.convertType(srcObj, TypeUtil.arrayTypeString(destClass));
	// }
	//
	// static public Object convertType(Object srcObj, String destType) throws
	// com.leadron.bos.base.exception.TypeConvertException {
	// Class srcClass;
	// org.apache.commons.logging.Log logger;
	// String typeStr;
	// Class destClass;
	// ClassNotFoundException cnfEx;
	// if (destType == null) {
	// return srcObj;
	// }
	// if (srcObj == null) {
	// return null;
	// }
	// srcClass = srcObj.getClass();
	// if (destType.equals(srcClass.getName())) {
	// return srcObj;
	// }
	// logger =
	// org.apache.commons.logging.LogFactory.getLog((class$com$leadron$bos$base$util$TypeUtil
	// == null) ? (class$com$leadron$bos$base$util$TypeUtil =
	// TypeUtil.class$("com.leadron.bos.base.util.TypeUtil")) :
	// class$com$leadron$bos$base$util$TypeUtil);
	// if (srcClass.isArray()) {
	// typeStr = TypeUtil.arrayTypeString(srcClass);
	// if (destType.equals(typeStr)) {
	// return srcObj;
	// }
	// logger.error(new
	// StringBuffer().append("Specified type:").append(destType).append(" not match with array type obj:").append(typeStr).append(", convert fail").toString());
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Specified type:").append(destType).append(" not match with array type obj:").append(typeStr).append(", convert fail").toString());
	// }
	// if (TypeUtil.isTypeArray(destType)) {
	// logger.error(new
	// StringBuffer().append("Can not convert single object:").append(srcClass.getName()).append(" to array:").append(destType).toString());
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Can not convert single object:").append(srcClass.getName()).append(" to array:").append(destType).toString());
	// }
	// if ((TypeUtil.isPrimaryObj(srcClass) == false) && ((srcClass !=
	// ((class$java$util$Date == null) ? (class$java$util$Date =
	// TypeUtil.class$("java.util.Date")) : class$java$util$Date)) && (srcClass
	// != ((class$java$lang$String == null) ? (class$java$lang$String =
	// TypeUtil.class$("java.lang.String")) : class$java$lang$String)))) {
	// try {
	// destClass = TypeUtil.loadClass(destType);
	// if (destClass.isAssignableFrom(srcClass)) {
	// srcObj;
	// return }
	// }
	// try {
	// logger.error(new
	// StringBuffer().append("Specified type:").append(destType).append(" not assignable from ").append(srcClass.getName()).append(", convert fail").toString());
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Specified type:").append(destType).append(" not assignable from ").append(srcClass.getName()).append(", convert fail").toString());
	// }
	// (cnfEx = catch);
	// logger.error(new
	// StringBuffer().append("Specified type:").append(destType).append(" not found").toString(),
	// cnfEx);
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Specified type:").append(destType).append(" not found").toString(),
	// cnfEx);
	// }
	// if ((("boolean".equals(destType)) || ("Boolean".equals(destType))) ||
	// ("java.lang.Boolean".equals(destType))) {
	// return Boolean.valueOf(srcObj.toString());
	// }
	// if ((("byte".equals(destType)) || ("Byte".equals(destType))) ||
	// ("java.lang.Byte".equals(destType))) {
	// return Byte.valueOf(srcObj.toString());
	// }
	// if ((("short".equals(destType)) || ("Short".equals(destType))) ||
	// ("java.lang.Short".equals(destType))) {
	// return Short.valueOf(srcObj.toString());
	// }
	// if ((("int".equals(destType)) || ("Integer".equals(destType))) ||
	// ("java.lang.Integer".equals(destType))) {
	// return Integer.valueOf(srcObj.toString());
	// }
	// if ((("long".equals(destType)) || ("Long".equals(destType))) ||
	// ("java.lang.Long".equals(destType))) {
	// return Long.valueOf(srcObj.toString());
	// }
	// if ((("float".equals(destType)) || ("Float".equals(destType))) ||
	// ("java.lang.Float".equals(destType))) {
	// return Float.valueOf(srcObj.toString());
	// }
	// if ((("double".equals(destType)) || ("Double".equals(destType))) ||
	// ("java.lang.Double".equals(destType))) {
	// return Double.valueOf(srcObj.toString());
	// }
	// if ((("string".equals(destType)) || ("String".equals(destType))) ||
	// ("java.lang.String".equals(destType))) {
	// if ((srcObj instanceof java.util.Date)) {
	// return DateUtil.datetimeToString((java.util.Date) srcObj);
	// }
	// return srcObj.toString();
	// }
	// if ((("date".equals(destType)) || ("Date".equals(destType))) ||
	// ("java.util.Date".equals(destType))) {
	// if ((srcObj instanceof String)) {
	// return DateUtil.stringToDate((String) srcObj);
	// }
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Can not convert from:").append(srcClass.getName()).append(" to Date").toString());
	// }
	// throw new com.leadron.bos.base.exception.TypeConvertException(new
	// StringBuffer().append("Can not convert from:").append(srcClass.getName()).append(" to ").append(destType).toString());
	// }
	//
	// static public boolean isTypeArray(String typeStr) {
	// if (typeStr == null) {
	// return false;
	// }
	// return typeStr.endsWith("[]");
	// }
	//
	// static public String arrayTypeString(Class cls) {
	// String typeStr;
	// String name;
	// int dimension;
	// int i;
	// if (cls == null) {
	// return null;
	// }
	// typeStr = null;
	// name = cls.getName();
	// dimension = 0;
	// dimension = 0;
	// while (dimension < name.length()) {
	// if (name.charAt(dimension) != 91) {
	// break;
	// }
	// dimension++;
	// }
	// if (dimension > 0) {
	// {
	// switch (name.charAt(dimension)) {
	// case 0:
	// typeStr = "byte";
	// break;
	// case 1:
	// typeStr = "char";
	// break;
	// case 2:
	// typeStr = "double";
	// break;
	// case 4:
	// typeStr = "float";
	// break;
	// case 7:
	// typeStr = "int";
	// break;
	// case 8:
	// typeStr = "long";
	// break;
	// case 10:
	// typeStr = name.substring(dimension + 1, name.length() - 1);
	// break;
	// case 17:
	// typeStr = "short";
	// break;
	// case 24:
	// typeStr = "boolean";
	// break;
	// case 20:
	// typeStr = "void";
	// }
	// case 23:
	// case 22:
	// case 21:
	// case 19:
	// case 18:
	// case 16:
	// case 15:
	// case 14:
	// case 13:
	// case 12:
	// case 11:
	// case 9:
	// case 6:
	// case 5:
	// case 3:
	// }
	// i = 0;
	// while (i < dimension) {
	// typeStr = new StringBuffer().append(typeStr).append("[]").toString();
	// i++;
	// }
	// }
	// else {
	// typeStr = name;
	// }
	// return typeStr;
	// }

	// static Class class$(String x0) {
	// ClassNotFoundException x1;
	// try {
	// Class.forName(x0);
	// return }
	// catch (x1) {
	// throw new NoClassDefFoundError(x1.getMessage());
	// }
	// }
}
